<?php

/**
 * Zend Framework
 * LICENSE
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * @category Zend
 * @package Zend_Date
 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
 * @license http://framework.zend.com/license/new-bsd New BSD License
 * @version $Id: Cities.php 24593 2012-01-05 20:35:02Z matthew $
 */
/**
 * Additional data for sunset/sunrise calculations
 * Holds the geographical data for all capital cities and many others worldwide
 * Original data from http://www.fallingrain.com/world/
 * @category Zend
 * @package Zend_Date
 * @subpackage Zend_Date_Cities
 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
 * @license http://framework.zend.com/license/new-bsd New BSD License
 */
class Zend_Date_Cities {

    /**
     * Array Collection of known cities
     * The array contains 'latitude' and 'longitude' for every known city
     * @var Array
     */
    public static $cities = array('Abidjan' => array('latitude' => 5.3411111, 'longitude' =>  - 4.0280556), 'Abu Dhabi' => array('latitude' => 24.4666667, 'longitude' => 54.3666667), 'Abuja' => array('latitude' => 9.1758333, 'longitude' => 7.1808333), 'Accra' => array('latitude' => 5.55, 'longitude' =>  - 0.2166667), 'Adamstown' => array('latitude' =>  - 25.0666667, 'longitude' =>  - 130.0833333), 'Addis Ababa' => array('latitude' => 9.0333333, 'longitude' => 38.7), 'Adelaide' => array('latitude' =>  - 34.9333333, 'longitude' => 138.6), 'Algiers' => array('latitude' => 36.7630556, 'longitude' => 3.0505556), 'Alofi' => array('latitude' =>  - 19.0166667, 'longitude' =>  - 169.9166667), 'Amman' => array('latitude' => 31.95, 'longitude' => 35.9333333), 'Amsterdam' => array('latitude' => 52.35, 'longitude' => 4.9166667), 'Andorra la Vella' => array('latitude' => 42.5, 'longitude' => 1.5166667), 'Ankara' => array('latitude' => 39.9272222, 'longitude' => 32.8644444), 'Antananarivo' => array('latitude' =>  - 18.9166667, 'longitude' => 47.5166667), 'Apia' => array('latitude' =>  - 13.8333333, 'longitude' =>  - 171.7333333), 'Ashgabat' => array('latitude' => 37.95, 'longitude' => 58.3833333), 'Asmara' => array('latitude' => 15.3333333, 'longitude' => 38.9333333), 'Astana' => array('latitude' => 51.1811111, 'longitude' => 71.4277778), 'Asunción' => array('latitude' =>  - 25.2666667, 'longitude' =>  - 57.6666667), 'Athens' => array('latitude' => 37.9833333, 'longitude' => 23.7333333), 'Auckland' => array('latitude' =>  - 36.8666667, 'longitude' => 174.7666667), 'Avarua' => array('latitude' =>  - 21.2, 'longitude' =>  - 159.7666667), 'Baghdad' => array('latitude' => 33.3386111, 'longitude' => 44.3938889), 'Baku' => array('latitude' => 40.3952778, 'longitude' => 49.8822222), 'Bamako' => array('latitude' => 12.65, 'longitude' =>  - 8), 'Bandar Seri Begawan' => array('latitude' => 4.8833333, 'longitude' => 114.9333333), 'Bankok' => array('latitude' => 13.5833333, 'longitude' => 100.2166667), 'Bangui' => array('latitude' => 4.3666667, 'longitude' => 18.5833333), 'Banjul' => array('latitude' => 13.4530556, 'longitude' =>  - 16.5775), 'Basel' => array('latitude' => 47.5666667, 'longitude' => 7.6), 'Basseterre' => array('latitude' => 17.3, 'longitude' =>  - 62.7166667), 'Beijing' => array('latitude' => 39.9288889, 'longitude' => 116.3883333), 'Beirut' => array('latitude' => 33.8719444, 'longitude' => 35.5097222), 'Belgrade' => array('latitude' => 44.8186111, 'longitude' => 20.4680556), 'Belmopan' => array('latitude' => 17.25, 'longitude' =>  - 88.7666667), 'Berlin' => array('latitude' => 52.5166667, 'longitude' => 13.4), 'Bern' => array('latitude' => 46.9166667, 'longitude' => 7.4666667), 'Bishkek' => array('latitude' => 42.8730556, 'longitude' => 74.6002778), 'Bissau' => array('latitude' => 11.85, 'longitude' =>  - 15.5833333), 'Bloemfontein' => array('latitude' =>  - 29.1333333, 'longitude' => 26.2), 'Bogotá' => array('latitude' => 4.6, 'longitude' =>  - 74.0833333), 'Brasilia' => array('latitude' =>  - 15.7833333, 'longitude' =>  - 47.9166667), 'Bratislava' => array('latitude' => 48.15, 'longitude' => 17.1166667), 'Brazzaville' => array('latitude' =>  - 4.2591667, 'longitude' => 15.2847222), 'Bridgetown' => array('latitude' => 13.1, 'longitude' =>  - 59.6166667), 'Brisbane' => array('latitude' =>  - 27.5, 'longitude' => 153.0166667), 'Brussels' => array('latitude' => 50.8333333, 'longitude' => 4.3333333), 'Bucharest' => array('latitude' => 44.4333333, 'longitude' => 26.1), 'Budapest' => array('latitude' => 47.5, 'longitude' => 19.0833333), 'Buenos Aires' => array('latitude' =>  - 34.5875, 'longitude' =>  - 58.6725), 'Bujumbura' => array('latitude' =>  - 3.3761111, 'longitude' => 29.36), 'Cairo' => array('latitude' => 30.05, 'longitude' => 31.25), 'Calgary' => array('latitude' => 51.0833333, 'longitude' =>  - 114.0833333), 'Canberra' => array('latitude' =>  - 35.2833333, 'longitude' => 149.2166667), 'Cape Town' => array('latitude' =>  - 33.9166667, 'longitude' => 18.4166667), 'Caracas' => array('latitude' => 10.5, 'longitude' =>  - 66.9166667), 'Castries' => array('latitude' => 14, 'longitude' =>  - 61), 'Charlotte Amalie' => array('latitude' => 18.34389, 'longitude' =>  - 64.93111), 'Chicago' => array('latitude' => 41.85, 'longitude' =>  - 87.65), 'Chisinau' => array('latitude' => 47.055556, 'longitude' => 28.8575), 'Cockburn Town' => array('latitude' => 21.4666667, 'longitude' =>  - 71.1333333), 'Colombo' => array('latitude' => 6.9319444, 'longitude' => 79.8477778), 'Conakry' => array('latitude' => 9.5091667, 'longitude' =>  - 13.7122222), 'Copenhagen' => array('latitude' => 55.6666667, 'longitude' => 12.5833333), 'Cotonou' => array('latitude' => 6.35, 'longitude' => 2.4333333), 'Dakar' => array('latitude' => 14.6708333, 'longitude' =>  - 17.4380556), 'Damascus' => array('latitude' => 33.5, 'longitude' => 36.3), 'Dar es Salaam' => array('latitude' =>  - 6.8, 'longitude' => 39.2833333), 'Dhaka' => array('latitude' => 23.7230556, 'longitude' => 90.4086111), 'Dili' => array('latitude' =>  - 8.5586111, 'longitude' => 125.5736111), 'Djibouti' => array('latitude' => 11.595, 'longitude' => 43.1480556), 'Dodoma' => array('latitude' =>  - 6.1833333, 'longitude' => 35.75), 'Doha' => array('latitude' => 25.2866667, 'longitude' => 51.5333333), 'Dubai' => array('latitude' => 25.2522222, 'longitude' => 55.28), 'Dublin' => array('latitude' => 53.3330556, 'longitude' =>  - 6.2488889), 'Dushanbe' => array('latitude' => 38.56, 'longitude' => 68.7738889), 'Fagatogo' => array('latitude' =>  - 14.2825, 'longitude' =>  - 170.69), 'Fongafale' => array('latitude' =>  - 8.5166667, 'longitude' => 179.2166667), 'Freetown' => array('latitude' => 8.49, 'longitude' =>  - 13.2341667), 'Gaborone' => array('latitude' =>  - 24.6463889, 'longitude' => 25.9119444), 'Geneva' => array('latitude' => 46.2, 'longitude' => 6.1666667), 'George Town' => array('latitude' => 19.3, 'longitude' =>  - 81.3833333), 'Georgetown' => array('latitude' => 6.8, 'longitude' =>  - 58.1666667), 'Gibraltar' => array('latitude' => 36.1333333, 'longitude' =>  - 5.35), 'Glasgow' => array('latitude' => 55.8333333, 'longitude' =>  - 4.25), 'Guatemala la Nueva' => array('latitude' => 14.6211111, 'longitude' =>  - 90.5269444), 'Hagatna' => array('latitude' => 13.47417, 'longitude' => 144.74778), 'The Hague' => array('latitude' => 52.0833333, 'longitude' => 4.3), 'Hamilton' => array('latitude' => 32.2941667, 'longitude' =>  - 64.7838889), 'Hanoi' => array('latitude' => 21.0333333, 'longitude' => 105.85), 'Harare' => array('latitude' =>  - 17.8177778, 'longitude' => 31.0447222), 'Havana' => array('latitude' => 23.1319444, 'longitude' =>  - 82.3641667), 'Helsinki' => array('latitude' => 60.1755556, 'longitude' => 24.9341667), 'Honiara' => array('latitude' =>  - 9.4333333, 'longitude' => 159.95), 'Islamabad' => array('latitude' => 30.8486111, 'longitude' => 72.4944444), 'Istanbul' => array('latitude' => 41.0186111, 'longitude' => 28.9647222), 'Jakarta' => array('latitude' =>  - 6.1744444, 'longitude' => 106.8294444), 'Jamestown' => array('latitude' =>  - 15.9333333, 'longitude' =>  - 5.7166667), 'Jerusalem' => array('latitude' => 31.7666667, 'longitude' => 35.2333333), 'Johannesburg' => array('latitude' =>  - 26.2, 'longitude' => 28.0833333), 'Kabul' => array('latitude' => 34.5166667, 'longitude' => 69.1833333), 'Kampala' => array('latitude' => 0.3155556, 'longitude' => 32.5655556), 'Kathmandu' => array('latitude' => 27.7166667, 'longitude' => 85.3166667), 'Khartoum' => array('latitude' => 15.5880556, 'longitude' => 32.5341667), 'Kigali' => array('latitude' =>  - 1.9536111, 'longitude' => 30.0605556), 'Kingston' => array('latitude' =>  - 29.05, 'longitude' => 167.95), 'Kingstown' => array('latitude' => 13.1333333, 'longitude' =>  - 61.2166667), 'Kinshasa' => array('latitude' =>  - 4.3, 'longitude' => 15.3), 'Kolkata' => array('latitude' => 22.5697222, 'longitude' => 88.3697222), 'Kuala Lumpur' => array('latitude' => 3.1666667, 'longitude' => 101.7), 'Kuwait City' => array('latitude' => 29.3697222, 'longitude' => 47.9783333), 'Kiev' => array('latitude' => 50.4333333, 'longitude' => 30.5166667), 'La Paz' => array('latitude' =>  - 16.5, 'longitude' =>  - 68.15), 'Libreville' => array('latitude' => 0.3833333, 'longitude' => 9.45), 'Lilongwe' => array('latitude' =>  - 13.9833333, 'longitude' => 33.7833333), 'Lima' => array('latitude' =>  - 12.05, 'longitude' =>  - 77.05), 'Lisbon' => array('latitude' => 38.7166667, 'longitude' =>  - 9.1333333), 'Ljubljana' => array('latitude' => 46.0552778, 'longitude' => 14.5144444), 'Lobamba' => array('latitude' =>  - 26.4666667, 'longitude' => 31.2), 'Lomé' => array('latitude' => 9.7166667, 'longitude' => 38.3), 'London' => array('latitude' => 51.5, 'longitude' =>  - 0.1166667), 'Los Angeles' => array('latitude' => 34.05222, 'longitude' =>  - 118.24278), 'Luanda' => array('latitude' =>  - 8.8383333, 'longitude' => 13.2344444), 'Lusaka' => array('latitude' =>  - 15.4166667, 'longitude' => 28.2833333), 'Luxembourg' => array('latitude' => 49.6116667, 'longitude' => 6.13), 'Madrid' => array('latitude' => 40.4, 'longitude' =>  - 3.6833333), 'Majuro' => array('latitude' => 7.1, 'longitude' => 171.3833333), 'Malabo' => array('latitude' => 3.75, 'longitude' => 8.7833333), 'Managua' => array('latitude' => 12.1508333, 'longitude' =>  - 86.2683333), 'Manama' => array('latitude' => 26.2361111, 'longitude' => 50.5830556), 'Manila' => array('latitude' => 14.6041667, 'longitude' => 120.9822222), 'Maputo' => array('latitude' =>  - 25.9652778, 'longitude' => 32.5891667), 'Maseru' => array('latitude' =>  - 29.3166667, 'longitude' => 27.4833333), 'Mbabane' => array('latitude' =>  - 26.3166667, 'longitude' => 31.1333333), 'Melbourne' => array('latitude' =>  - 37.8166667, 'longitude' => 144.9666667), 'Melekeok' => array('latitude' => 7.4933333, 'longitude' => 134.6341667), 'Mexiko City' => array('latitude' => 19.4341667, 'longitude' =>  - 99.1386111), 'Minsk' => array('latitude' => 53.9, 'longitude' => 27.5666667), 'Mogadishu' => array('latitude' => 2.0666667, 'longitude' => 45.3666667), 'Monaco' => array('latitude' => 43.7333333, 'longitude' => 7.4166667), 'Monrovia' => array('latitude' => 6.3105556, 'longitude' =>  - 10.8047222), 'Montevideo' => array('latitude' =>  - 34.8580556, 'longitude' =>  - 56.1708333), 'Montreal' => array('latitude' => 45.5, 'longitude' =>  - 73.5833333), 'Moroni' => array('latitude' =>  - 11.7041667, 'longitude' => 43.2402778), 'Moscow' => array('latitude' => 55.7522222, 'longitude' => 37.6155556), 'Muscat' => array('latitude' => 23.6133333, 'longitude' => 58.5933333), 'Nairobi' => array('latitude' =>  - 1.3166667, 'longitude' => 36.8333333), 'Nassau' => array('latitude' => 25.0833333, 'longitude' =>  - 77.35), 'N´Djamena' => array('latitude' => 12.1130556, 'longitude' => 15.0491667), 'New Dehli' => array('latitude' => 28.6, 'longitude' => 77.2), 'New York' => array('latitude' => 40.71417, 'longitude' =>  - 74.00639), 'Newcastle' => array('latitude' =>  - 32.9166667, 'longitude' => 151.75), 'Niamey' => array('latitude' => 13.6666667, 'longitude' => 1.7833333), 'Nicosia' => array('latitude' => 35.1666667, 'longitude' => 33.3666667), 'Nouakchott' => array('latitude' => 18.0863889, 'longitude' =>  - 15.9752778), 'Noumea' => array('latitude' =>  - 22.2666667, 'longitude' => 166.45), 'Nuku´alofa' => array('latitude' =>  - 21.1333333, 'longitude' =>  - 175.2), 'Nuuk' => array('latitude' => 64.1833333, 'longitude' =>  - 51.75), 'Oranjestad' => array('latitude' => 12.5166667, 'longitude' =>  - 70.0333333), 'Oslo' => array('latitude' => 59.9166667, 'longitude' => 10.75), 'Ouagadougou' => array('latitude' => 12.3702778, 'longitude' =>  - 1.5247222), 'Palikir' => array('latitude' => 6.9166667, 'longitude' => 158.15), 'Panama City' => array('latitude' => 8.9666667, 'longitude' =>  - 79.5333333), 'Papeete' => array('latitude' =>  - 17.5333333, 'longitude' =>  - 149.5666667), 'Paramaribo' => array('latitude' => 5.8333333, 'longitude' =>  - 55.1666667), 'Paris' => array('latitude' => 48.8666667, 'longitude' => 2.3333333), 'Perth' => array('latitude' =>  - 31.9333333, 'longitude' => 115.8333333), 'Phnom Penh' => array('latitude' => 11.55, 'longitude' => 104.9166667), 'Podgorica' => array('latitude' => 43.7752778, 'longitude' => 19.6827778), 'Port Louis' => array('latitude' =>  - 20.1666667, 'longitude' => 57.5), 'Port Moresby' => array('latitude' =>  - 9.4647222, 'longitude' => 147.1925), 'Port-au-Prince' => array('latitude' => 18.5391667, 'longitude' =>  - 72.335), 'Port of Spain' => array('latitude' => 10.6666667, 'longitude' =>  - 61.5), 'Porto-Novo' => array('latitude' => 6.4833333, 'longitude' => 2.6166667), 'Prague' => array('latitude' => 50.0833333, 'longitude' => 14.4666667), 'Praia' => array('latitude' => 14.9166667, 'longitude' =>  - 23.5166667), 'Pretoria' => array('latitude' =>  - 25.7069444, 'longitude' => 28.2294444), 'Pyongyang' => array('latitude' => 39.0194444, 'longitude' => 125.7547222), 'Quito' => array('latitude' =>  - 0.2166667, 'longitude' =>  - 78.5), 'Rabat' => array('latitude' => 34.0252778, 'longitude' =>  - 6.8361111), 'Reykjavik' => array('latitude' => 64.15, 'longitude' =>  - 21.95), 'Riga' => array('latitude' => 56.95, 'longitude' => 24.1), 'Rio de Janero' => array('latitude' =>  - 22.9, 'longitude' =>  - 43.2333333), 'Road Town' => array('latitude' => 18.4166667, 'longitude' =>  - 64.6166667), 'Rome' => array('latitude' => 41.9, 'longitude' => 12.4833333), 'Roseau' => array('latitude' => 15.3, 'longitude' =>  - 61.4), 'Rotterdam' => array('latitude' => 51.9166667, 'longitude' => 4.5), 'Salvador' => array('latitude' =>  - 12.9833333, 'longitude' =>  - 38.5166667), 'San José' => array('latitude' => 9.9333333, 'longitude' =>  - 84.0833333), 'San Juan' => array('latitude' => 18.46833, 'longitude' =>  - 66.10611), 'San Marino' => array('latitude' => 43.5333333, 'longitude' => 12.9666667), 'San Salvador' => array('latitude' => 13.7086111, 'longitude' =>  - 89.2030556), 'Sanaá' => array('latitude' => 15.3547222, 'longitude' => 44.2066667), 'Santa Cruz' => array('latitude' =>  - 17.8, 'longitude' =>  - 63.1666667), 'Santiago' => array('latitude' =>  - 33.45, 'longitude' =>  - 70.6666667), 'Santo Domingo' => array('latitude' => 18.4666667, 'longitude' =>  - 69.9), 'Sao Paulo' => array('latitude' =>  - 23.5333333, 'longitude' =>  - 46.6166667), 'Sarajevo' => array('latitude' => 43.85, 'longitude' => 18.3833333), 'Seoul' => array('latitude' => 37.5663889, 'longitude' => 126.9997222), 'Shanghai' => array('latitude' => 31.2222222, 'longitude' => 121.4580556), 'Sydney' => array('latitude' =>  - 33.8833333, 'longitude' => 151.2166667), 'Singapore' => array('latitude' => 1.2930556, 'longitude' => 103.8558333), 'Skopje' => array('latitude' => 42, 'longitude' => 21.4333333), 'Sofia' => array('latitude' => 42.6833333, 'longitude' => 23.3166667), 'St. George´s' => array('latitude' => 12.05, 'longitude' =>  - 61.75), 'St. John´s' => array('latitude' => 17.1166667, 'longitude' =>  - 61.85), 'Stanley' => array('latitude' =>  - 51.7, 'longitude' =>  - 57.85), 'Stockholm' => array('latitude' => 59.3333333, 'longitude' => 18.05), 'Suva' => array('latitude' =>  - 18.1333333, 'longitude' => 178.4166667), 'Taipei' => array('latitude' => 25.0166667, 'longitude' => 121.45), 'Tallinn' => array('latitude' => 59.4338889, 'longitude' => 24.7280556), 'Tashkent' => array('latitude' => 41.3166667, 'longitude' => 69.25), 'Tbilisi' => array('latitude' => 41.725, 'longitude' => 44.7908333), 'Tegucigalpa' => array('latitude' => 14.1, 'longitude' =>  - 87.2166667), 'Tehran' => array('latitude' => 35.6719444, 'longitude' => 51.4244444), 'The Hague' => array('latitude' => 52.0833333, 'longitude' => 4.3), 'Thimphu' => array('latitude' => 27.4833333, 'longitude' => 89.6), 'Tirana' => array('latitude' => 41.3275, 'longitude' => 19.8188889), 'Tiraspol' => array('latitude' => 46.8402778, 'longitude' => 29.6433333), 'Tokyo' => array('latitude' => 35.685, 'longitude' => 139.7513889), 'Toronto' => array('latitude' => 43.6666667, 'longitude' =>  - 79.4166667), 'Tórshavn' => array('latitude' => 62.0166667, 'longitude' =>  - 6.7666667), 'Tripoli' => array('latitude' => 32.8925, 'longitude' => 13.18), 'Tunis' => array('latitude' => 36.8027778, 'longitude' => 10.1797222), 'Ulaanbaatar' => array('latitude' => 47.9166667, 'longitude' => 106.9166667), 'Vaduz' => array('latitude' => 47.1333333, 'longitude' => 9.5166667), 'Valletta' => array('latitude' => 35.8997222, 'longitude' => 14.5147222), 'Valparaiso' => array('latitude' =>  - 33.0477778, 'longitude' =>  - 71.6011111), 'Vancouver' => array('latitude' => 49.25, 'longitude' =>  - 123.1333333), 'Vatican City' => array('latitude' => 41.9, 'longitude' => 12.4833333), 'Victoria' => array('latitude' =>  - 4.6166667, 'longitude' => 55.45), 'Vienna' => array('latitude' => 48.2, 'longitude' => 16.3666667), 'Vientaine' => array('latitude' => 17.9666667, 'longitude' => 102.6), 'Vilnius' => array('latitude' => 54.6833333, 'longitude' => 25.3166667), 'Warsaw' => array('latitude' => 52.25, 'longitude' => 21), 'Washington dc' => array('latitude' => 38.895, 'longitude' =>  - 77.03667), 'Wellington' => array('latitude' =>  - 41.3, 'longitude' => 174.7833333), 'Willemstad' => array('latitude' => 12.1, 'longitude' =>  - 68.9166667), 'Windhoek' => array('latitude' =>  - 22.57, 'longitude' => 17.0836111), 'Yamoussoukro' => array('latitude' => 6.8166667, 'longitude' =>  - 5.2833333), 'Yaoundé' => array('latitude' => 3.8666667, 'longitude' => 11.5166667), 'Yerevan' => array('latitude' => 40.1811111, 'longitude' => 44.5136111), 'Zürich' => array('latitude' => 47.3666667, 'longitude' => 8.55), 'Zagreb' => array('latitude' => 45.8, 'longitude' => 16));

    /**
     * Returns the location from the selected city
     * @param string $city City to get location for
     * @param string $horizon Horizon to use :
     *        default: effective
     *        others are civil, nautic, astronomic
     * @return array
     * @throws Zend_Date_Exception When city is unknown
     */
    public static function City ($city, $horizon = false) {
        foreach (self::$cities as $key => $value) {
            if (strtolower ($key) === strtolower ($city)) {
                $return = $value;
                $return['horizon'] = $horizon;
                return $return;
            }
        }
        require_once 'Zend/Date/Exception.php';
        throw new Zend_Date_Exception ('unknown city');
    }

    /**
     * Return a list with all known cities
     * @return array
     */
    public static function getCityList () {
        return array_keys (self::$cities);
    }

}
